使用了 23 的 Java 真的收费了吗?
作者 | 局长
本文经授权转载自开源中国
几个月前,在 Java 11 到来之际,开源中国曾发起一项 Java 常用版本的调查,根据调查结果显示,国内有近 70% 的用户表示仍在使用 Java 8。
但是去年四月,Oracle 曾宣布,自 2019 年 1 月起,Java SE 8 公开更新将不向没有商用许可证的业务、商用或生产用途提供。对此,不少开发者将其解读为未来开发者还想使用 JDK 8,Oracle 将不会提供免费的技术支持,需要另外收费。而如今 2019 年 1 月已过,Java 8 是否真的收费了?
关于这个问题,接下来,本文会阐述清楚,以消除不必要的恐慌。
首先要明确一点,Java 仍然是免费的,并不需要付费使用!
下面解释「Java 8 要收费」这个说法的不合理之处。
先说说所谓的「收费」是怎么回事。Oracle 一直以来的政策均是如此,所谓「收费」是面向到达生命周期阶段的 Java 版本,即每个 Oracle JDK 版本的免费 Bug 修复和安全维护是有期限的,到期后不再为大众提供开放维护。如需继续维护,则要「付费」获取更新或者技术支持。
划重点了!收费,指的是企业用户如果要继续使用2019年1月以后发布的 Java 8 更新,需要付费购买 Oracle 的商业许可证。
这是由于2019年1月份之后,Oracle Java 8 的公开更新将不向没有商用许可证的业务、商用或生产用途提供。详情请查看官方的公告: https://java.com/zh_CN/download/release_notice.jsp
到这里,相信各位已了解所谓的「收费」是怎么回事了。「收费」面向的对象一直都是企业用户,至于个人用户,可以继续免费更新到2020年12月。
像这种公告,大体上没毛病,但问题不是「因 Oracle JDK 许可变更」,而是这本来就是 Oracle 的更新策略,旨在鼓励开发者升级到更高版本的 JDK。
因为 Oracle JDK 8 u191 是2019年1月前发布的最新版本,所以只要一直使用 JDK 8 u191 以及更早的版本,就不需付费。
不过根据此前报道的一篇「Java SE 11.0.2(LTS)、8u201 / Java SE 8u202 发布」资讯,有用户回复表示,Java 的更新弹出信息显示为:
Java SE 8 is going through the End of Public Updates process for legacy releases. Oracle will continue to provide free public updates and auto updates of Java SE 8, until at least the end of December 2020 for Personal Users, and January 2019 for Commercial Users. Personal Users continue to get free Java SE 8 updates from Oracle at java.com (or via auto update), and Commercial Users continue to get free updates to Java SE 8 from OTN for free under the BCL license. Starting with the April 2019 scheduled quarterly critical patch update, Oracle Customers can access updates to Java SE 8 for commercial use from Oracle through My Oracle Support and via corporate auto update where applicable (Visit My.Oracle Support Note 1439822.1 - All Java SE Downloads on MOS – Requires Support Login)
意思即是,2019年4月起的更新将影响公司或企业用户;正在安装的版本则不受影响。按这个说法,最新的 JDK 8 u201 和 JDK 8 u202 仍可免费使用。
当然,如果你需要使用最新的 Java 特性,从 JDK 11 开始,Oracle 提供了 OpenJDK 的下载包,可用于商业和生产用途。
建议各个公司的技术负责人,认真检查线上运行的各个 Java 版本,确保版本在许可范围之内。另外,以后到官网下载 JDK 包时,请选择 OpenJDK 。
所以,「Java 8 要收费」这样一句话,必须要说清楚明确的对象和具体的条件。
热 文 推 荐
☞ 刘强东新年公开信;人民网三评“百度已死”;华为折叠屏邀请函 | 极客头条
☞ 弃 Windows 而拥抱 Linux,我有这些新发现!
☞ 年薪 10 万的程序员,如何积累人生的第一个 100 万?
print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"